package com.zf.skywalking.service;

import com.zf.skywalking.entity.Student;
import org.apache.skywalking.apm.toolkit.trace.Tag;
import org.apache.skywalking.apm.toolkit.trace.Tags;
import org.apache.skywalking.apm.toolkit.trace.Trace;
import org.springframework.stereotype.Service;

/**
 * @author Zhou Feng
 */
@Service
public class HelloService {

    /**
     * 自定义skywalking追踪节点
     */
    // Trace注解标识我们自定义的链路追踪节点
    @Trace
    // Tags注解可以给我们的追踪节点添加更详细的信息，如入参和返回
    @Tags({
            //  在自定义的追踪链路中记录返回值，key是记录的名称，自定义即可；
            //  returnedObj值是固定的，表示返回对象，可以用 returnedObj.code 获取返回中的code属性
            @Tag(key = "result", value = "returnedObj"),
            @Tag(key = "resultName", value = "returnedObj.name"),
            //  在自定义的追踪链路中记录入参，arg[X]对应入参下标
            @Tag(key = "name", value = "arg[0]"),
            @Tag(key = "gender", value = "arg[1]")
    })
    public Student testCustomServiceNode(String name, String gender){
        Student student = new Student();
        student.setName(name);
        student.setGender(gender);
        return student;
    }
}
